﻿using Common.Contract.CrossSelling;
using Common.Contract.CrossSelling.Request;
using Common.Contract.CrossSelling.Response;
using CrossSelling.Core.ServiceCommand;
using CrossSelling.Service.Core;

namespace CrossSelling.Service
{
    public class CrossSellingService : ServiceBase, ICrossSelling
    {
        public RetrieveListProductResponse RetrieveListProduct(RetrieveListProductRequest request)
        {
            return new RetrieveListProductServiceCommand(Provider).Execute(request);
        }
        public RetrieveListProductResponse RetrieveListHoldProduct(RetrieveListProductRequest request)
        {
            return new RetrieveListHoldProductServiceCommand(Provider).Execute(request);
        }
        public RetrieveCustomerByProductResponse RetrieveCustomerByProduct(RetrieveCustomerByProductRequest request)
        {
            return new RetrieveCustomerByProductServiceCommand(Provider).Execute(request);
        }
        public RetrieveCustomerHoldProductResponse RetrieveCustomerHoldProduct(RetrieveCustomerHoldProductRequest request)
        {
            return new RetrieveCustomerHoldProductServiceCommand(Provider).Execute(request);
        }
        public RetrievePreApprovedCustCreditCardConversionResponse RetrieveCustomerPreApprovedCreditCardConversion(RetrievePreApprovedCustCreditCardConversionRequest request)
        {
            return new RetrieveCustomerPreApprovedCreditCardConversionServiceCommand(Provider).Execute(request); 
        }
        public RetrievePreApprovedCustCreditCardForLoanResponse RetrieveCustomerPreApprovedCreditCardForLoan(RetrievePreApprovedCustCreditCardForLoanRequest request)
        {
            return new RetrieveCustomerPreApprovedCreditCardForLoanServiceCommand(Provider).Execute(request); 
        }
        public RetrievePreApprovedCustBilResponse RetrieveCustomerPreApprovedBil(RetrievePreApprovedCustBilRequest request)
        {
            return new RetrieveCustomerPreApprovedBilServiceCommand(Provider).Execute(request); 
        }
        public RetrievePreApprovedCustWCResponse RetrieveCustomerPreApprovedWC(RetrievePreApprovedCustWCRequest request)
        {
            return new RetrieveCustomerPreApprovedWCServiceCommand(Provider).Execute(request); 
        }
        public RetrieveCustomerByRateLimitResponse RetrieveCustomerByRateLimit(RetrieveCustomerByRateLimitRequest request)
        {
            return new RetrieveCustomerByRateLimitServiceCommand(Provider).Execute(request); 
        }
        public RetrieveProductXSellingByCifResponse RetrieveProductXSellingByCif(RetrieveProductXSellingByCifRequest request)
        {
            return new RetrieveProductXSellingByCifServiceCommand(Provider).Execute(request); 
        }
    }
}
